package day0115;

import java.util.Arrays;

interface Enemy {
    int addScore();
}



interface Award {}

abstract class FlyObject {
    int x=0;
    int y=0;
    int speed=1;
    abstract void move();
}

//蜜蜂的作用是给玩家奖励的(和Enemy接口没关系)
class Bee extends FlyObject implements Award {
    void move(){
        y= y +speed;
        x= x +speed;
    }
}


class SmallPlane extends FlyObject implements Enemy{
    int score=10;
    public int addScore(){//表示此飞机被消灭时，给玩家增加几分
        System.out.println("给玩家加10分");
        return score;
    }

    public void move(){
        y=y+speed;
        System.out.println("敌方小飞机正在移动,速度为" + speed);
    }
}




public class MyGameTest {
    FlyObject[]  flys=new FlyObject[0];//1.定义一个FlyObject[] flys=new FlyObject[0];
    //2.定义一个createObjs(){}，根据随机数的范围创建不同的对象存入到flys数组的最后一位。
    private void createObjs() {
        int num=(int)(Math.random()*100);
        if(0<num&& num<20){//创建Bee放入flys数组最后一个位置
            Bee b=new Bee();
            flys=Arrays.copyOf(flys, flys.length+1);//将数组扩容出一个新空间
            flys[flys.length-1]=b;
        }else{//创建飞机放入flys数组最后一个位置
            SmallPlane b=new SmallPlane();
            flys=Arrays.copyOf(flys, flys.length+1);//将数组扩容出一个新空间
            flys[flys.length-1]=b;
        }
    }

    public static void main(String[] args) throws InterruptedException {
        MyGameTest game=new MyGameTest();
        while(true){
            game.createObjs();//1.
            //2.调用flys数组每个元素的move()让数组元素都自动往前走一下//打印数组长度，用来检查createObjs()在不断给flys数组中添加元素。
            //可以看到每隔800毫秒就会增加一个新元素
            System.out.println(game.flys.length);
            Thread.sleep(800);
        }
    }

/*
    void shooted(day0115.game.FlyObject obj){// FlyObject  plane=new SmallPlane();
        if(obj instanceof day0115.game.Award){
            System.out.println("给玩家奖励双倍子弹");
        }else if(obj instanceof day0115.game.Enemy){
            day0115.game.Enemy e=(day0115.game.Enemy)obj;
            e.addScore();//调用敌方对象的添加分数方法
        }
    }
*/



}












